package fr.lip6.meta.ple.generation.strategy;

import java.util.ArrayList;
import java.util.Collection;

import fr.lip6.meta.ple.constraintsextraction.constraint.Constraint;
import fr.lip6.meta.ple.featureIdentification.Feature;
import fr.lip6.meta.ple.featureIdentification.Product;

/**
 * Extension strategy (FeatureHouse, AspectJ, ...)
 * for features generation
 * 
 * @author Simon Grandsire
 *
 */
public interface ProductLineConstructionStrategy
	extends GenerationStrategy {
	/**
	 * @param features
	 * @param rules
	 */
	public void generateFeatureModel(Collection<Feature> features, ArrayList<Constraint> rules);

	/**
	 * @param features
	 * @param products
	 */
	public void construct(Collection<Feature> features, Collection<Product> products);
	
	/**
	 * @param products
	 */
	public void setProducts(Collection<Product> products);
}